package RRHH_Modelo;

import Conexion.Conexion;
import java.sql.SQLException;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;

public class RHH_DATOS_PLANILLA {
    
    private int ID_PLANILLA;
    private int ID_DATOS;
    private String DESCRIPCION;
    private Conexion con = null;

    public RHH_DATOS_PLANILLA(Conexion con) {
        this.con = con;
    }

    public RHH_DATOS_PLANILLA(int ID_PLANILLA, int ID_DATOS, String DESCRIPCION) {        
        this.ID_PLANILLA = ID_PLANILLA;
        this.ID_DATOS = ID_DATOS;
        this.DESCRIPCION = DESCRIPCION;
    }

    public boolean Insertar() throws SQLException {
        String consulta = "insert into BROKER.RHH_DATOS_PLANILLA (ID_PLANILLA, ID_DATOS, DESCRIPCION) VALUES (" + ID_PLANILLA + "," + ID_DATOS + ",'" + DESCRIPCION + "')";
        con.EjecutarSentencia(consulta);
        return true;
    }

    public boolean Modificar() throws SQLException {
        String consulta = "update BROKER.RHH_DATOS_PLANILLA set ID_PLANILLA = " + ID_PLANILLA + ",ID_DATOS = " + ID_DATOS + ",DESCRIPCION = '" + DESCRIPCION + "' where ID_PLANILLA =  " + getID_PLANILLA()+" AND ID_DATOS ="+getID_DATOS();
        con.EjecutarSentencia(consulta);
        return true;
    }
    
    public boolean Eliminar(int ano, int mes) throws SQLException {
        String consulta =   "delete FROM BROKER.RHH_DATOS_PLANILLA where RHH_DATOS_PLANILLA.ID_PLANILLA in(\n" +
                            "SELECT  RHH_PLANILLA_EMPLEADOS.ID\n" +
                            "FROM BROKER.RHH_DATOS_PLANILLA,\n" +
                            "BROKER.RHH_PLANILLA_EMPLEADOS,\n" +
                            "BROKER.RHH_PLANILLA_EMPLEADOS_CABECE\n" +
                            "WHERE (RHH_DATOS_PLANILLA.ID_PLANILLA = RHH_PLANILLA_EMPLEADOS.ID)\n" +
                            "             AND (RHH_PLANILLA_EMPLEADOS.ID_CABECERA =\n" +
                            "                          RHH_PLANILLA_EMPLEADOS_CABECE.ID)\n" +
                            "                        AND (RHH_PLANILLA_EMPLEADOS_CABECE.ANO = "+ano+")\n" +
                            "      AND (RHH_PLANILLA_EMPLEADOS_CABECE.MES = "+mes+"))";
        con.EjecutarSentencia(consulta);
        return true;
    }

    public List<RHH_DATOS_PLANILLA> Todos() throws SQLException {
        String consulta = "select * from BROKER.RHH_DATOS_PLANILLA";
        ResultSet rs = con.EjecutarConsulta(consulta);
        List<RHH_DATOS_PLANILLA> lista = Cargar(rs);
        return lista;
    }
    
    public List<RHH_DATOS_PLANILLA> TodosxPlanilla(int id_planilla) throws SQLException {
        String consulta = "select * from BROKER.RHH_DATOS_PLANILLA where ID_PLANILLA = "+id_planilla;
        ResultSet rs = con.EjecutarConsulta(consulta);
        return Cargar(rs);        
    }
    public RHH_DATOS_PLANILLA Buscar(int id_planilla, int id_dato) throws SQLException {
        String consulta = "select * from BROKER.RHH_DATOS_PLANILLA where ID_PLANILLA = "+id_planilla+" AND ID_DATOS="+id_dato;
        ResultSet rs = con.EjecutarConsulta(consulta);
        List<RHH_DATOS_PLANILLA> lista = Cargar(rs);
        if(lista.size()>0)
            return lista.get(0);
        else
            return null;
    }
    public boolean isExist(int ano, int mes, int id_dato) throws SQLException {
        
        String consulta = "SELECT RHH_DATOS_PLANILLA.ID_PLANILLA,\n" +
                            "       RHH_DATOS_PLANILLA.ID_DATOS,\n" +
                            "       RHH_DATOS_PLANILLA.DESCRIPCION\n" +
                            "  FROM BROKER.RHH_DATOS_PLANILLA,\n" +
                            "       BROKER.RHH_PLANILLA_EMPLEADOS,\n" +
                            "       BROKER.RHH_PLANILLA_EMPLEADOS_CABECE\n" +
                            " WHERE (RHH_DATOS_PLANILLA.ID_PLANILLA = RHH_PLANILLA_EMPLEADOS.ID)\n" +
                            "       AND (RHH_PLANILLA_EMPLEADOS.ID_CABECERA =\n" +
                            "               RHH_PLANILLA_EMPLEADOS_CABECE.ID)\n" +
                            "       AND (RHH_DATOS_PLANILLA.ID_DATOS = "+id_dato+")\n" +
                            "       AND (RHH_PLANILLA_EMPLEADOS_CABECE.ANO = "+ano+")\n" +
                            "       AND (RHH_PLANILLA_EMPLEADOS_CABECE.MES = "+mes+")";
        ResultSet rs = con.EjecutarConsulta(consulta);
        if(rs.next())
            return true;
        else
            return false;
    }

    public List<RHH_DATOS_PLANILLA> Cargar(ResultSet rs) throws SQLException {
        List<RHH_DATOS_PLANILLA> lista = new ArrayList<RHH_DATOS_PLANILLA>();
        while (rs.next()) {
            RHH_DATOS_PLANILLA objeto = new RHH_DATOS_PLANILLA(con);            
            objeto.setID_PLANILLA(rs.getInt("ID_PLANILLA"));
            objeto.setID_DATOS(rs.getInt("ID_DATOS"));
            objeto.setDESCRIPCION(rs.getString("DESCRIPCION"));
            lista.add(objeto);
        }
        return lista;
    }

    public int getID_PLANILLA() {
        return ID_PLANILLA;
    }

    public void setID_PLANILLA(int ID_PLANILLA) {
        this.ID_PLANILLA = ID_PLANILLA;
    }

    public int getID_DATOS() {
        return ID_DATOS;
    }

    public void setID_DATOS(int ID_DATOS) {
        this.ID_DATOS = ID_DATOS;
    }

    public String getDESCRIPCION() {
        return DESCRIPCION;
    }

    public void setDESCRIPCION(String DESCRIPCION) {
        this.DESCRIPCION = DESCRIPCION;
    }

    public Conexion getCon() {
        return this.con;
    }

    public void setCon(Conexion con) {
        this.con = con;
    }
}
